package com.anjubao.parking.municipal.parkingrecord.model;

import com.anjubao.parking.municipal.common.entity.BaseEntity;
import com.anjubao.parking.municipal.common.utils.U;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 停车记录表
 * @author anjubao
 */
@TableName(value = "parking_record")
@Data
public class ParkingRecord extends BaseEntity<ParkingRecord>{

    /**
     * 进出记录ID
     */
    @TableId(type = IdType.INPUT)
    private Long parkingRecordId;

    /**
     * 进出记录code
     */
    private String parkingRecordCode;

    /**
     * 接入车场进出记录ID
     */
    private String remoteParkingRecordId;

    /**
     * 系统类型(1:封闭式停车系统 2:路内停车系统)
     */
    private Integer systemType;

    /**
     * 停车场ID
     */
    private Long parkingLotId;

    /**
     * 停车场编号,code生成规则为100(3位)+yyMMddHHmm(10位)+id(19位)
     */
    private String parkingLotCode;

    /**
     * 停车场名称
     */
    private String parkingLotName;

    /**
     * 停车场所在省份ID
     */
    private Integer parkingLotProvinceId;

    /**
     * 停车场所在省份名称
     */

    private String parkingLotProvinceName;

    /**
     * 停车场所在城市ID
     */
    private Integer parkingLotCityId;

    /**
     * 停车场所在城市名称
     */
    private String parkingLotCityName;

    /**
     * 停车场所在区域ID
     */
    private Integer parkingLotDistrictId;

    /**
     * 停车场所在区域名称
     */
    private String parkingLotDistrictName;

    /**
     * 停车场对应地图系统上的纬度坐标
     */
    private BigDecimal parkingLotLatitude;

    /**
     * 停车场对应地图系统上的经度坐标
     */
    private BigDecimal parkingLotLongitude;

    /**
     * 停车场停车位ID
     */
    private Long parkingLotSlotId;

    /**
     * 停车场停车位编号
     */
    private String parkingLotSlotCode;

    /**
     * 停车场停车位名称
     */
    private String parkingLotSlotName;

    /**
     * 车牌号码（车牌识别）
     */
    private String plateNumber;

    /**
     * 停车类型(0：临时车 1：月卡车 3：访客车 4：预约车 5： 特殊车辆 6：其它车辆)
     */
    private Integer parkingType;

    /**
     * 车主姓名
     */
    private String customerName;

    /**
     * 车主手机号码
     */
    private String customerContactNumber;

    /**
     * 车辆类型(1:小客车 2:大客车 3:货车)
     */
    private Integer vehicleType;

    /**
     * 入场图片
     */
    private String enterSnapshotUrl;

    /**
     * 入场时间
     */
    private LocalDateTime enterTime;

    /**
     * 入口名称
     */
    private String enterPort;

    /**
     * 出场图片
     */
    private String leaveSnapshotUrl;

    /**
     * 出场时间
     */
    private LocalDateTime leaveTime;

    /**
     * 出口名称
     */
    private String leavePort;

    /**
     * 停车时长(单位：秒)
     */
    private Integer leaveParkingDuration;

    /**
     * 应收总金额(单位：分)
     */
    private Integer feeTotal;

    /**
     * 实收总金额(单位：分)
     */
    private Integer paidTotal;

    /**
     * 优惠金额(单位：分)
     */
    private Integer discountTotal;

    /**
     * 是否充电了？0：未充电，1:充电了
     */
    private Integer isBatteryCharged;

    /**
     * 充电费用(独立的，与停车费用无关)
     */
    private Integer batteryChargingDuration;

    /**
     * 卡号（取卡出入场）
     */
    private String cardId;

    /**
     * 默认值:-1 ; 地磁方案:0 ;视频桩方案: 1
     */
    private Integer parkingDetectType;

    /**
     * 乐观锁
     */
    @Version
    private Integer revision;



    @Override
    public String toString() {
        return U.json(this);
    }
}
